Current abstraction layers, such as the processor abstraction layer (PAL) and the system abstraction layer (SAL), are architected such that interfaces to the abstraction layers do not change when the underlying hardware changes, thereby reducing the possibility that applications or operating systems (OSs) will not work when changes are made to the hardware. It follows, then, that an application that uses the abstraction layers can be used among systems having different hardware types and/or versions, as hardware-specific implementations are abstracted from the application and OS layers.
PAL and SAL are examples of architected HALs, in that all operations performed by PAL and SAL are publicly known or useable and are implemented in software. For example, architected features can be published in technical documentation such as hardware datasheets, software developer's reference manuals, processor design guides, platform design guides, etc.
Because these HALs are architected such that they are visible to all software, it can be difficult to provide access to protected resources or increase the functionality of PAL or SAL to support debug and bug fixes during validation or after production of a processor.